1. Field of the Invention
This invention relates generally to data processing systems and, more particularly, to object oriented programming systems and processes.
2. Description of the Related Art
In a computer system having a distributed database, data communication is often implemented according to a client/server model, in which client processes send requests to a server for data or for the use of other computer system resources. For example, it is common for large amounts of data files to be stored on a computer called a file server, which communicates with multiple user machines over a local area network (LAN). The user machines comprise the clients of the file server. The clients send requests for data or for other network services (such as printing or system error reporting) to the file server, which returns the data or provides the requested service.
Server functions may be performed by one or more server processes executing in the operating environment of the server. In an object oriented programming (OOP) environment, the server processes can be implemented as server objects. That is, the operating system process/job of the file server supports an object oriented programming environment in which an OOP object representing the server manages other server objects that perform the file server functions.
OOP techniques encapsulate, or bind together, data and the methods that operate on them. This encapsulation permits program development to more closely model real-world systems for problem solution and breaks up program development efforts into smaller, more manageable pieces. OOP programs are developed around object classes that have attributes, also called data values, and methods, also called functions. Although OOP techniques have done much to improve program development efficiency, such techniques still require a great degree of code generation on the part of developers and limit program reuse.
OOP frameworks have been developed in an effort to further reduce program development costs. A framework is a set of OOP classes that embodies a predetermined set of attributes and methods for providing a common group of behaviors. An application program developer utilizes the framework and builds upon it, starting with the classes, attributes, and methods defined by the framework designer and adding subclasses and attributes and modifying methods depending on the problem to be solved. Such changes to the framework are typically referred to as framework extensions, and are made possible by the OOP notions of inheritance and polymorphism. The challenge confronting framework developers, then, is to define a set of classes and methods that will best support the desired problem solution and will accept the most likely framework extensions. Thus, the designer of a framework must carefully assess what framework users will most likely need in the way of classes and attributes.
With respect to client/server operating environments, it may be desired to add new server functions or services from time to time. Such changes in server functioning usually require modification to the server programming logic, including possibly adding classes. Modification of much code might be necessary, because the server functions are typically extremely interdependent. For example, adding a new problem reporting function to a server may require modification to the server functioning for network client communication and for log processing. That is, adding the new problem reporting function might require modification of the server logic for two other pre-existing functions. This type of logic interdependency complicates server maintenance and server development because each change in functioning can result in many other modifications that must be propagated throughout the server programming code. Similarly, it might be necessary to add a new type of server to support a new type of hardware device, such as a graphics file library or communications server. Again, interdependencies might make it necessary to propagate changes through the server program. It would be preferable if new server functions and types could be added without need for extensive server logic modification.
From the discussion above, it should be apparent that there is a need for a server program development tool that permits program developers to more quickly develop and more easily maintain server programs. The present invention fulfills this need.